package com.gaogzhen.utils;

import com.gaogzhen.model.ExceptionEnum;
import com.gaogzhen.model.RRException;

import java.util.function.Function;

/**
 * 处理sql执行失败时，自定义抛出异常类型
 * @author Administrator
 * @version 1.0
 * @description 处理sql异常工具类
 * @date 2022-11-04 10:50
 */
public class SqlExecuteUtils {
    /**
     * 处理sql执行失败时，自定义抛出异常类型
     * @param method    执行的sql操作
     * @param t         sql操作所需的参数
     * @param e         异常信息
     * @param <T>       参数泛型
     */
    public static <T> void sqlExceptionHandler(Function<T, Boolean> method,T t,ExceptionEnum e) {
        Boolean ret = method.apply(t);
        if (!ret) {
            throw new RRException(e);
        }
    }


    public static <T> void sqlExceptionHandler(Function<T, Boolean> method, T t) {
        SqlExecuteUtils.sqlExceptionHandler(method, t, ExceptionEnum.DEFAULT);
    }

    public static <T> void sqlExceptionHandler(Function<T, Boolean> method,T t,String msg) {
        Boolean ret = method.apply(t);
        if (!ret) {
            throw new RRException(msg);
        }
    }
}
